마할라노비스 거리
IT 위키
더 많은 작업
- Mahalanobis Distance; 마할라노비스 거리
- 변수들의 분산과 변수 사이의 상관(공분산 행렬)을 반영해 계산하는 다변량 거리
인도의 통계학자 P. C. 마할라노비스(Prasanta Chandra Mahalanobis)가 1936년 논문 "On the Generalised Distance in Statistics"에서 제안했다. 유클리드 거리는 모든 변수를 같은 척도로 보고 변수들이 서로 독립인 것처럼 계산하지만, 마할라노비스 거리는 공분산 행렬의 역행렬을 곱해 각 변수의 분산(척도)과 변수 사이의 상관을 함께 고려한다. 그래서 데이터가 퍼진 방향을 따라서는 거리가 짧게, 퍼짐과 어긋나는 방향으로는 거리가 길게 계산된다.
평균 벡터가 μ이고 공분산 행렬이 Σ인 분포에서, 관측 벡터 x와 중심 사이의 마할라노비스 거리는 다음과 같다.
같은 분포에서 나온 두 관측 벡터 x, y 사이의 거리는 다음과 같다.
- 표본 자료에서는 μ 대신 표본 평균 벡터, Σ 대신 표본 공분산 행렬 S를 쓴다. 표본 공분산 행렬은 이다.
- Σ가 단위 행렬 I이면(모든 변수의 분산이 1이고 서로 상관이 없으면) 마할라노비스 거리는 유클리드 거리와 같다.
- Σ가 대각 행렬이면(변수 사이에 상관이 없으면) 각 변수를 표준편차로 나눈 뒤 계산한 유클리드 거리, 즉 표준화 거리와 같다.
- 공분산 행렬의 역행렬이 필요하므로, 변수끼리 완전한 선형 관계가 있어 공분산 행렬이 특이 행렬이면 그대로 계산할 수 없다.
두 변수의 평균이 모두 0, 분산이 모두 1, 상관계수가 0.8이라고 하자. 공분산 행렬과 그 역행렬은 다음과 같다.
| 점 | 유클리드 거리 | 마할라노비스 거리 | 해석 |
|---|---|---|---|
| A = (1, 1) | √2, 약 1.414 | √(0.4/0.36), 약 1.054 | 두 변수가 함께 커지는 방향, 즉 데이터가 주로 퍼진 방향에 있다. |
| B = (1, −1) | √2, 약 1.414 | √(3.6/0.36) = √10, 약 3.162 | 양의 상관과 어긋나는 방향에 있어 드문 점이다. |
- 두 점은 중심에서 유클리드 거리가 같지만, 마할라노비스 거리로는 B가 A보다 세 배 정도 멀다. B처럼 각 변수만 따로 보면 평범해도 변수 사이의 관계에서 벗어난 점을 찾아낼 수 있다(값은 numpy로 검산).
| 거리 | 식 (두 점 x, y, 변수 p개) | 척도 차이 반영 | 변수 간 상관 반영 | 특징 |
|---|---|---|---|---|
| 유클리드 거리 | 반영 안 함 | 반영 안 함 | 가장 흔히 쓰는 직선 거리. 단위가 큰 변수의 영향이 커진다. | |
| 맨해튼 거리 | 반영 안 함 | 반영 안 함 | 각 축 방향 차이의 절댓값 합. 시가 거리라고도 한다. | |
| 표준화 거리 | 반영(각 변수의 분산으로 나눔) | 반영 안 함 | 변수별 표준편차로 척도를 맞춘 유클리드 거리. 통계적 거리라고도 한다. | |
| 마할라노비스 거리 | 반영 | 반영(공분산 행렬 사용) | 표준화 거리에 변수 간 상관까지 고려한 거리. | |
| 민코프스키 거리 | 반영 안 함 | 반영 안 함 | m = 1이면 맨해튼 거리, m = 2이면 유클리드 거리가 되는 일반형. |
- 척도가 다른 변수(예: 키 cm와 몸무게 kg, 연봉 원)를 섞어 유클리드 거리를 쓰면 단위가 큰 변수가 거리를 좌우한다. 표준화 거리와 마할라노비스 거리는 이 문제를 줄인다.
- 범주형 자료에는 이런 연속형 거리가 아니라 단순 일치 계수, 자카드 계수 같은 유사도를 쓴다.
- 군집 분석에서 관측치 사이의 비유사성을 재는 거리 척도 가운데 하나로 쓴다. 변수들이 서로 상관이 높을 때 유클리드 거리를 쓰면 상관된 변수들이 같은 정보를 중복해서 반영하는데, 마할라노비스 거리는 이를 보정한다.
- 군집 전체의 공분산 행렬을 알아야 하므로 계산량이 많고, 군집마다 공분산 구조가 다르면 어떤 공분산 행렬을 쓸지 정해야 한다.
- 각 관측치와 평균 벡터 사이의 마할라노비스 거리를 구해 값이 큰 관측치를 이상치 후보로 본다.
- 다변량 정규 분포를 가정하면 제곱 마할라노비스 거리 는 자유도가 변수 개수 p인 카이제곱 분포를 따르므로(표본 평균 벡터와 표본 공분산 행렬을 쓰면 근사적으로), 카이제곱 분포의 상위 분위수를 기준값으로 쓸 수 있다.
- 변수 하나씩 보는 박스 플롯이나 평균 ± 3σ 기준으로는 찾을 수 없는, 변수 사이의 관계에서 벗어난 이상치를 찾을 수 있다.
- 평균 벡터와 공분산 행렬 자체가 이상치의 영향을 받으므로, 이상치가 많으면 이상치가 오히려 가려질 수 있다.
x <- iris[, 1:4]
d2 <- mahalanobis(x, center = colMeans(x), cov = cov(x)) # 제곱 마할라노비스 거리
cutoff <- qchisq(0.975, df = ncol(x)) # 자유도 4 카이제곱 분포의 97.5% 분위수
which(d2 > cutoff) # 기준을 넘는 관측치 번호
- R의
mahalanobis()함수(stats 패키지)는 거리의 제곱 값을 돌려준다.
- 마할라노비스 거리는 공분산 행렬(의 역행렬)을 이용한다.
- 변수의 척도 차이와 변수 사이의 상관을 모두 고려한다. 표준화 거리는 척도만 고려하고 상관은 고려하지 않는다.
- 공분산 행렬이 단위 행렬이면 유클리드 거리와 같아진다.
- 민코프스키 거리는 m = 1일 때 맨해튼 거리, m = 2일 때 유클리드 거리이다.
- 다변량 이상치 탐지에 쓰인다.